<!DOCTYPE html>



  


<html class="theme-next muse use-motion" lang="zh-CN">
<head><meta name="generator" content="Hexo 3.9.0">
  <meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="theme-color" content="#222">









<meta http-equiv="Cache-Control" content="no-transform">
<meta http-equiv="Cache-Control" content="no-siteapp">
















  
  
  <link href="/hexo/lib/fancybox/source/jquery.fancybox.css?v=2.1.5" rel="stylesheet" type="text/css">







<link href="/hexo/lib/font-awesome/css/font-awesome.min.css?v=4.6.2" rel="stylesheet" type="text/css">

<link href="/hexo/css/main.css?v=5.1.4" rel="stylesheet" type="text/css">


  <link rel="apple-touch-icon" sizes="180x180" href="/hexo/images/apple-touch-icon-next.png?v=5.1.4">


  <link rel="icon" type="image/png" sizes="32x32" href="/hexo/images/favicon-32x32-next.png?v=5.1.4">


  <link rel="icon" type="image/png" sizes="16x16" href="/hexo/images/favicon-16x16-next.png?v=5.1.4">


  <link rel="mask-icon" href="/hexo/images/logo.svg?v=5.1.4" color="#222">





  <meta name="keywords" content="经验分享,">










<meta name="description" content="近两年，小程序变得异常火热，不论哪行哪业，都扎堆往里投入大量成本，跻身行业前列，即便是终端app用户数量很高的企业，也纷纷推出自己的小程序版本（比如美团，京东等），来扩展业务和流量，出现这种局面的原因，我想简单聊一下个人的观点；首先，小程序这个产品，是微信首先推出来的，然后各个大厂都紧随其后也在微信小程序出现后不久推出，比如支付宝小程序，百度小程序，平台虽然不一样，但实质的内容其实差不太多，要说用">
<meta name="keywords" content="经验分享">
<meta property="og:type" content="article">
<meta property="og:title" content="分享一次小程序开发中的各种坑。。。">
<meta property="og:url" content="https://tony_df.coding.net/2019/07/09/分享一次小程序开发中的各种坑。。。/index.html">
<meta property="og:site_name" content="Tony&#39;s blog">
<meta property="og:description" content="近两年，小程序变得异常火热，不论哪行哪业，都扎堆往里投入大量成本，跻身行业前列，即便是终端app用户数量很高的企业，也纷纷推出自己的小程序版本（比如美团，京东等），来扩展业务和流量，出现这种局面的原因，我想简单聊一下个人的观点；首先，小程序这个产品，是微信首先推出来的，然后各个大厂都紧随其后也在微信小程序出现后不久推出，比如支付宝小程序，百度小程序，平台虽然不一样，但实质的内容其实差不太多，要说用">
<meta property="og:locale" content="zh-CN">
<meta property="og:image" content="https://tony_df.coding.net/2019/07/09/分享一次小程序开发中的各种坑。。。/%E4%BA%BA%E8%84%B8%E8%AE%A4%E8%AF%81%E6%B5%81%E7%A8%8B.jpg">
<meta property="og:updated_time" content="2019-07-11T07:50:51.050Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="分享一次小程序开发中的各种坑。。。">
<meta name="twitter:description" content="近两年，小程序变得异常火热，不论哪行哪业，都扎堆往里投入大量成本，跻身行业前列，即便是终端app用户数量很高的企业，也纷纷推出自己的小程序版本（比如美团，京东等），来扩展业务和流量，出现这种局面的原因，我想简单聊一下个人的观点；首先，小程序这个产品，是微信首先推出来的，然后各个大厂都紧随其后也在微信小程序出现后不久推出，比如支付宝小程序，百度小程序，平台虽然不一样，但实质的内容其实差不太多，要说用">
<meta name="twitter:image" content="https://tony_df.coding.net/2019/07/09/分享一次小程序开发中的各种坑。。。/%E4%BA%BA%E8%84%B8%E8%AE%A4%E8%AF%81%E6%B5%81%E7%A8%8B.jpg">



<script type="text/javascript" id="hexo.configurations">
  var NexT = window.NexT || {};
  var CONFIG = {
    root: '/hexo/',
    scheme: 'Muse',
    version: '5.1.4',
    sidebar: {"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},
    fancybox: true,
    tabs: true,
    motion: {"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},
    duoshuo: {
      userId: '0',
      author: 'Tony'
    },
    algolia: {
      applicationID: '',
      apiKey: '',
      indexName: '',
      hits: {"per_page":10},
      labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
    }
  };
</script>



  <link rel="canonical" href="https://tony_df.coding.net/2019/07/09/分享一次小程序开发中的各种坑。。。/">





  <title>分享一次小程序开发中的各种坑。。。 | Tony's blog</title>
  








</head>

<body itemscope itemtype="http://schema.org/WebPage" lang="zh-CN">

  
  
    
  

  <div class="container sidebar-position-left page-post-detail">
    <div class="headband"></div>

    <header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-wrapper">
  <div class="site-meta ">
    

    <div class="custom-logo-site-title">
      <a href="/hexo/" class="brand" rel="start">
        <span class="logo-line-before"><i></i></span>
        <span class="site-title">Tony's blog</span>
        <span class="logo-line-after"><i></i></span>
      </a>
    </div>
      
        <p class="site-subtitle">学着码代码,学着码人生;</p>
      
  </div>

  <div class="site-nav-toggle">
    <button>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
    </button>
  </div>
</div>

<nav class="site-nav">
  

  
    <ul id="menu" class="menu">
      
        
        <li class="menu-item menu-item-home">
          <a href="/hexo/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-question-circle"></i> <br>
            
            Home
          </a>
        </li>
      
        
        <li class="menu-item menu-item-tags">
          <a href="/hexo/tags/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-question-circle"></i> <br>
            
            Tags
          </a>
        </li>
      
        
        <li class="menu-item menu-item-archives">
          <a href="/hexo/archives/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-question-circle"></i> <br>
            
            Archives
          </a>
        </li>
      

      
    </ul>
  

  
</nav>



 </div>
    </header>

    <main id="main" class="main">
      <div class="main-inner">
        <div class="content-wrap">
          <div id="content" class="content">
            

  <div id="posts" class="posts-expand">
    

  

  
  
  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="https://tony_df.coding.net/hexo/2019/07/09/分享一次小程序开发中的各种坑。。。/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="Tony">
      <meta itemprop="description" content>
      <meta itemprop="image" content="/hexo/images/avatar.gif">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Tony's blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">分享一次小程序开发中的各种坑。。。</h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">Posted on</span>
              
              <time title="Post created" itemprop="dateCreated datePublished" datetime="2019-07-09T15:20:17+08:00">
                2019-07-09
              </time>
            

            

            
          </span>

          

          
            
          

          
          

          

          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        <p>近两年，小程序变得异常火热，不论哪行哪业，都扎堆往里投入大量成本，跻身行业前列，即便是终端app用户数量很高的企业，也纷纷推出自己的小程序版本（比如美团，京东等），来扩展业务和流量，出现这种局面的原因，我想简单聊一下个人的观点；<br>首先，小程序这个产品，是微信首先推出来的，然后各个大厂都紧随其后也在微信小程序出现后不久推出，比如支付宝小程序，百度小程序，平台虽然不一样，但实质的内容其实差不太多，要说用户基础，微信小程序肯定是第一，支付宝小程序用于政法口的产品多一些，比如社保啊，车辆查分啊等等，百度小程序在各个方面影响力就都稍微差一点，还有头条小程序等等就不多说了，主要的平台还是在微信和支付宝。之所以兴起的很快，是刚兴起的时候，没有很多繁琐的审核手续，开发流程也是异常的简单，快捷，很符合流行的前后端分离的开发模式，只要业务不是特别特殊，基本上在APP上能实现的，小程序上都能实现，但开发成本却低了很多，而且，依托微信，支付宝这种大流量平台，也可以很快的推广自己的产品，加入这些大厂的生态圈，推广的难度也就低了很多，所以，小程序是难得一见的，实实在在的，物美价廉的低投入高回报产品，所以仅仅两年时间，小程序就已经风靡整个社会。<br>但是这种快速的增长也带来了很多问题，最突出的就是网络安全和用户隐私数据的问题，期间国家也完善了《国家网络安全法》，因此，不论是腾讯还是阿里巴巴，都必须承担这种社会责任，在平台的审核过程中增添了诸多严苛的规则限制，但这也只是一个阵痛，从国家的层面先认识到网络安全的问题然后加以整改，比真的发生大规模数据安全问题后在整改要好的多。所以，我觉得，无论是用户还是开发者，都应该认同这种整改。当然我们的采坑经历也就从这里开始了。。。<br>前些天，接到了开发公司微信小程序的项目，因为之前有开发小程序接口的经历，所以我认为这并不是什么难事。当然，我在之前也知道开发小程序，应该是规划先行，手续先行，也就是提前把该申请的都申请了，该有的权限都有了，开发起来其实并不困难，但由于项目来的急，所有这些在项目开始前都是空白的，包括小程序的页面设计这些都是没有的，我们从零开始，设计，开发小程序，尽管功能规划不多，但仅仅两周的时间，也几乎是不可能完成的任务了，因为即便我们开发完成，小程序还有审核等这些不确定的因素，所以几乎是硬着头皮，开始了项目的开发历程；<br>我开博客第一篇就聊微信支付，支付宝支付，我说依托第三方的接口，一定要提前申请各种权限，不能等到项目开始了才去申请，会吃大亏，但这次我们就真的吃了这个亏。这次我们没有用到支付，但是用到了人脸识别，因为之前我是专注后端，对小程序的一些规则制度了解的也不是很多，等我们开发完成提交审核才发现，原来小程序平台是不支持普通企业和个人开发人脸识别类似的功能的，原因就是我之前提到的网络安全原因，可能你并没有收集用户隐私数据的动机，但对于平台来说，规则就是规则，所以，当看到审核结果后，的确有点懵逼，有点手足无措，难道辛苦两周赶出来的成品就要这样上不了线，竹篮打水一场空？<br>后来，也是项目组同事找到了相关的说明，<a href="https://developers.weixin.qq.com/community/business/doc/000442d352c1202bd498ecb105c00d" target="_blank" rel="noopener">https://developers.weixin.qq.com/community/business/doc/000442d352c1202bd498ecb105c00d</a>，并非是不能上人脸识别，只是得按照腾讯规定的规则来上，其实刚开始看这个文档，内心其实也是充满疑虑的，因为这和我的需求完全不符啊，我需要的是通过人脸识别来确定用户信息，我得现有了用户信息，先有了自己的人脸库，才能继续后续的步骤，而微信的意思是，如果你要上人脸识别，那么识别的流程是必须要分离出来的，也就是人脸识别仅用于“证明你是你”，不能拍照，不能上传，不能和自建的人脸库比对，其实弄清了这点，再想一下我们的需求，思路也柳暗花明了一些（本来想借着这个机会再分享一下代码逻辑，但看篇幅好像有点太长了，下篇吧，这篇就聊坑）。<br>简单总结一下，我们的业务流程的转变，就像下面这幅图一样<br><img src="%E4%BA%BA%E8%84%B8%E8%AE%A4%E8%AF%81%E6%B5%81%E7%A8%8B.jpg" alt="人脸认证流程"><br>开始，我们是自建人脸库，自己完成人脸识别，在“证明你是你”的流程中，同时完成了用户信息的查询以及签到等业务，那么转变之后，我们就把“证明你是你”这块的业务分离出来，交给微信去做，而我们只需要根据人脸认证的结果，来判定是否可以进行下一步的操作，而至于认证之后的操作，就完全一样了。<br>那么说了半天，坑在哪？<br>其实还是前面提到的，开始之前，使用人脸核身，需要满足一定资质，这个如果在之前发现，早发现早解决，可坑就坑在我们是在项目完成后才发现，就得重新更换符合条件的账号主体，并申请人脸核身权限，也就是说，现在我们的小程序上线，完完全全是卡在了资质审核上，开发已经完成，即便是有流程修改，在捋顺思路之后，也无非是增加了少许的工作量，整体并没有太大的影响。<br>因此，再次总结一下开发微信小程序的注意事项（都是血淋淋的经历）<br>1.确定项目需求后，总结需要用到的微信接口，特殊接口有，支付，客服，人脸核身等，及时查看官方文档，确定之后，再根据维系需要的资质，以合适的主体去申请小程序账号，非常重要，应该说这是小程序开发最为关键的一步，该步错，步步错！<br>2.小程序是有强制安全措施的，开发的时候可以在本地做接口对接，但也要尽可能提前去申请域名，ssl证书等相关资源，不要留到最后。<br>3.开发周期的预估，一定要留足小程序审核的时间，我经历的项目，以及我周边认识的同事，同学经历的项目，几乎没有一次审核通过的，都是多次审核才通过小程序审核，这个时间是完全不可控的，且没有人工客服入口，只能等待。</p>
<p>好了，坑差不多聊完了，上篇的时候我说要聊聊在项目管理上的一些事儿，这个分公司分团队，但不论如何，项目的管理应该是灵活化，便捷化，而不能复杂化，繁琐化，我在新东家，因为是新人，在没有向大家证明自己之前，也不敢多说什么，但在这个短短两周的项目当中，感到了不少的困扰。<br>首先说立项，项目的立项没有任何形式的文档说明，甚至项目团队都没有拿到哪怕是一个大概的需求文档，仅仅是通过几次会议，几次邮件沟通，就决定了项目上马，仓促无序，几乎没有任何规划，当然，这个是和企业的习惯有关，可能大家以前都适应了这种模式，这并没有对错，而且客观的讲，甚至有点不要脸的说，我好歹是经历过几年风霜的，我对自己的能力会有一个相对清楚和客观的预估，我认为我可以硬抗下来这种项目，但对于那些工作经验不足的同事来说，这可能是致命的，一个项目leader的能力，不仅仅是开发层面的，这种项目管理的经验有时候会显得更加重要，如果不能很好的理解老板想要什么，并且很快的在脑子里形成产品的雏形，仅通过短期的沟通，无文档无说明无设计的项目，你做不出来，所以这种团队，并不适合初入职场的新人。<br>再来说团队，我在项目中也犯了一些错误，有几次没有和团队成员商量，就擅自决定一些事情，确实给开发带来的一些困扰，因为我确实有一些私心，我想通过这个项目，向公司证明自己，展示自己，而且，通过和领导的沟通，我认为我了解了他需要什么，我也认为我们可以在规定的时间内完成，所以我犯了一些错误，但我想说的是，私心就是私心，在不了解团队成员的情况下，私心有时候会导致严重的错误，我的私心更多的是想证明自己，而不是去完成项目，所以这一定是错的。令人欣慰的是，后续的开发过程比较顺利，我们的协作也非常出色，尽管十分辛苦，但并没有任何的抱怨（我说的是对完成工作），反而因为进度很快，我们的成就感也很高，达到了事半功倍的效果，之前的不愉快也就一扫而尽了。<br>还有就是，我想说的，制度的问题，因为公司的制度，一些硬件资源，不是每个项目组都有权限直接操作的，我们在申请这些资源的时候，遇到了一些阻力当然也有助力，本来是想将一肚子的郁闷在这不吐不快的，但老话讲，知不言，言不尽，还是算了，总之这个东西在制度，更在人，遇到能帮助你的人是庆幸，遇到给你添麻烦的，是现实，也没什么可说的，就当给自己上了一堂职场课。<br>所以我觉得，开发过程中的坑，不一定都是开发的过程带来的，这种公司的文化，制度等因素也可能是带来更加不容易解决的坑。每个人都没有错，别人也没有义务去替你解决问题，就像前面说的能碰上一个好的领导是庆幸，碰不上是人生，所以对待问题的这种心态还是要平稳一些，我觉得，现在的像我们公司这种以研发驱动的公司，在管理制度上应该更加的优化，彼此之间应该有更多交流沟通的机会，更加的开放，更加的自由，不能你只管你的项目，我只做我的，这当中，可能A项目组需要的功能，B项目组已经开发过了，但A组却不知道，还要再次开发一遍，做了同样的事情，耽误了项目的时间，而如果我们保持良好的沟通，这种事情就会少很多，同事之间也会因为交流的增多，而更加了解彼此，得到更快的进步，好了，闲聊就到这了，下篇来聊一下开发一个微信小程序的具体流程和我们团队的一些结题思路。</p>

      
    </div>
    
    
    

    

    

    

    <footer class="post-footer">
      
        <div class="post-tags">
          
            <a href="/hexo/tags/经验分享/" rel="tag"># 经验分享</a>
          
        </div>
      

      
      
      

      
        <div class="post-nav">
          <div class="post-nav-next post-nav-item">
            
              <a href="/hexo/2019/07/01/停更一段时间/" rel="next" title="停更一段时间">
                <i class="fa fa-chevron-left"></i> 停更一段时间
              </a>
            
          </div>

          <span class="post-nav-divider"></span>

          <div class="post-nav-prev post-nav-item">
            
              <a href="/hexo/2019/07/10/分享一次小程序开发中的各种坑。。。（续）/" rel="prev" title="分享一次小程序开发中的各种坑。。。（续）">
                分享一次小程序开发中的各种坑。。。（续） <i class="fa fa-chevron-right"></i>
              </a>
            
          </div>
        </div>
      

      
      
    </footer>
  </div>
  
  
  
  </article>



    <div class="post-spread">
      
        <!-- Go to www.addthis.com/dashboard to customize your tools -->
<div class="addthis_inline_share_toolbox">
  <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5bbb2338b87602f0" async="async"></script>
</div>

      
    </div>
  </div>


          </div>
          


          

  
    <div class="comments" id="comments">
      <div id="lv-container" data-id="city" data-uid="MTAyMC8zOTA1My8xNTU4MA"></div>
    </div>

  



        </div>
        
          
  
  <div class="sidebar-toggle">
    <div class="sidebar-toggle-line-wrap">
      <span class="sidebar-toggle-line sidebar-toggle-line-first"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-middle"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-last"></span>
    </div>
  </div>

  <aside id="sidebar" class="sidebar">
    
    <div class="sidebar-inner">

      

      

      <section class="site-overview-wrap sidebar-panel sidebar-panel-active">
        <div class="site-overview">
          <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
            
              <p class="site-author-name" itemprop="name">Tony</p>
              <p class="site-description motion-element" itemprop="description">学习总结</p>
          </div>

          <nav class="site-state motion-element">

            
              <div class="site-state-item site-state-posts">
              
                <a href="/hexo/archives/">
              
                  <span class="site-state-item-count">58</span>
                  <span class="site-state-item-name">posts</span>
                </a>
              </div>
            

            

            
              
              
              <div class="site-state-item site-state-tags">
                <a href="/hexo/tags/index.html">
                  <span class="site-state-item-count">7</span>
                  <span class="site-state-item-name">tags</span>
                </a>
              </div>
            

          </nav>

          

          

          
          

          
          

          

        </div>
      </section>

      

      

    </div>
  </aside>


        
      </div>
    </main>

    <footer id="footer" class="footer">
      <div class="footer-inner">
        <div class="copyright">&copy; <span itemprop="copyrightYear">2021</span>
  <span class="with-love">
    <i class="fa fa-user"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">Tony</span>

  
</div>


  <div class="powered-by">Powered by <a class="theme-link" target="_blank" href="https://hexo.io">Hexo</a></div>



  <span class="post-meta-divider">|</span>



  <div class="theme-info">Theme &mdash; <a class="theme-link" target="_blank" href="https://github.com/iissnan/hexo-theme-next">NexT.Muse</a> v5.1.4</div>




        







        
      </div>
    </footer>

    
      <div class="back-to-top">
        <i class="fa fa-arrow-up"></i>
        
      </div>
    

    

  </div>

  

<script type="text/javascript">
  if (Object.prototype.toString.call(window.Promise) !== '[object Function]') {
    window.Promise = null;
  }
</script>









  












  
  
    <script type="text/javascript" src="/hexo/lib/jquery/index.js?v=2.1.3"></script>
  

  
  
    <script type="text/javascript" src="/hexo/lib/fastclick/lib/fastclick.min.js?v=1.0.6"></script>
  

  
  
    <script type="text/javascript" src="/hexo/lib/jquery_lazyload/jquery.lazyload.js?v=1.9.7"></script>
  

  
  
    <script type="text/javascript" src="/hexo/lib/velocity/velocity.min.js?v=1.2.1"></script>
  

  
  
    <script type="text/javascript" src="/hexo/lib/velocity/velocity.ui.min.js?v=1.2.1"></script>
  

  
  
    <script type="text/javascript" src="/hexo/lib/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>
  


  


  <script type="text/javascript" src="/hexo/js/src/utils.js?v=5.1.4"></script>

  <script type="text/javascript" src="/hexo/js/src/motion.js?v=5.1.4"></script>



  
  

  
  <script type="text/javascript" src="/hexo/js/src/scrollspy.js?v=5.1.4"></script>
<script type="text/javascript" src="/hexo/js/src/post-details.js?v=5.1.4"></script>



  


  <script type="text/javascript" src="/hexo/js/src/bootstrap.js?v=5.1.4"></script>



  


  




	





  





  
    <script type="text/javascript">
      (function(d, s) {
        var j, e = d.getElementsByTagName(s)[0];
        if (typeof LivereTower === 'function') { return; }
        j = d.createElement(s);
        j.src = 'https://cdn-city.livere.com/js/embed.dist.js';
        j.async = true;
        e.parentNode.insertBefore(j, e);
      })(document, 'script');
    </script>
  












  





  

  

  

  
  

  

  

  

</body>
</html>
